home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-03 / dosbasic.zip / ASM.ZIP / OPER.ASM < prev    next >
Assembly Source File  |  1990-12-19  |  3KB  |  123 lines

  1. ;«RM82»«TS8,16,24,32,40,48»
  2. ;updated 12/12/90
  3.  
  4. DOSSEG
  5. .MODEL MEDIUM, BASIC
  6. .CODE
  7.  
  8. ;=============================================================================
  9. ; DECLARE SUB OTHEROPER (DPMI%, WINDOWS%, DESQ%)
  10. ; CALL OTHEROPER(DPMI%, WINDOWS%, DESQ%)
  11. ; Purpose: Checks if DPMI, or MS Windows or Quarterdeck DESQVIEW is active
  12. ; Returns:
  13. ;    For each variable that exists -1
  14. ;       Else if multitasking environment does not exist then returns 0
  15. ;    Returns 0 if used with DOS versions < 3.x
  16. ;=============================================================================
  17.  
  18. ; Please do not remove
  19. Copyright       DB    13,10,'Copyright Copr. (C) 1990 Sidney J. Kelly',13,10
  20. Copyright1      DB    'All Rights Reserved',13,10,26
  21.  
  22. EVEN
  23. OTHEROPER PROC FAR BASIC, DPMI:WORD, WINDOWS:WORD, DESQ:WORD
  24.  
  25. ;These tests came from a public domain program called SYSINFO Ver
  26. ;1.35.   It is written in Ver 5.5 Turbo Pascal by Andrew Rossmann (10/7/90)
  27.  
  28.     ;DOS Version Test if less then 3, then report not found
  29.     Mov     AX,3000h        ;check & see if software cd be installed
  30.     Int     21h             ;not possible before DOS Ver. 3.x
  31.     Cmp     AL,3            ;major version in AL
  32.     JB      Dos_Ver_2x      ;less than 3.xx so quit with not found
  33.  
  34.     ; IF DPMI found, then DH = Major Version
  35.     ;                then DL = Minor Version
  36.     ;         CL = Chip Type
  37.     ;            2=286
  38.     ;            3=386
  39.     ;            4=486 
  40.     Mov     AX,1687h        ; test for DPMI
  41.     Int    2Fh
  42.     Or    AX,AX
  43.     JNZ    DPMI_Not_Found
  44.     Mov    AX,-1
  45.     Jmp     Short @f
  46.  
  47. DPMI_Not_Found:
  48.     Xor    AX,AX
  49. @@:
  50.     Mov    BX,DPMI
  51.     Mov    [BX],AX
  52.     
  53. ;search for MS Windows
  54. ;version information display not implemented
  55.     Mov     AX,1600h        ; test for Windows
  56.     Int    2Fh
  57.     Cmp     AL,1            ; if 1 then Windows 386 Ver 2.x
  58.     JE    Win_386
  59.     Cmp     AL,0FFh         ; if -1 then Windows 386 Ver 2.x
  60.     JE    Win_386
  61.     OR      AL,AL           ; if zero
  62.     JZ      Win_Real
  63.     Cmp     AL,80h          ; or 80h then test some more
  64.     JE    Win_Real
  65.  
  66. Win_Enhanced:                   ; else, the default case
  67.     ;Major Version in AL, 
  68.     ;Minor Version in AH
  69.     Mov    AX,-1
  70.     Jmp    Short    Win_End
  71.  
  72. Win_386:                        ; nothing special returned
  73.     Mov    AX,-1
  74.     Jmp    Short    Win_End
  75.  
  76. Win_Real:                       ; Real Mode test
  77.     Mov    AX,4680h
  78.     Int    2Fh
  79.     Or      AX,AX           ; see if AX = 0
  80.     JZ      @f              ; if yes, then Windows found
  81.     Xor     AX,AX           ; else no Windows
  82.     Jmp    Short    Win_End
  83. @@:
  84.     Mov     AX,-1           ; report Win_Real found
  85.  
  86. Win_End:
  87.     Mov     BX,WINDOWS      ; store values
  88.     Mov    [BX],AX
  89.  
  90. ;Search for DESQView
  91. ;If DESQView found then, If BX = 2 then Version 2.00
  92. ;         else BH = major version
  93. ;             BL = minor version
  94.  
  95.     Mov    AX,2B01h
  96.     Mov     CX,4445h        ;'DE'
  97.     Mov     DX,5351h        ;'SQ'
  98.     Int    21h
  99.     Cmp    AL,0FFh
  100.     JE    DESQ_Not_Found
  101.     Mov    AX,-1
  102.     Jmp     SHORT @f
  103.  
  104. DESQ_Not_Found:
  105.     Xor    AX,AX
  106. @@:
  107.     Mov    BX,DESQ
  108.     Mov    [BX],AX
  109. Finis:
  110.     Ret
  111.  
  112. Dos_Ver_2x:
  113.     Xor     AX,AX           ; report not found
  114.     Mov     BX,DPMI         ; store 0 in all variables
  115.     Mov     [BX],AX         ; DOS Version 2.x
  116.     Mov     BX,WINDOWS      ; did not initialize a vector for INT 2Fh.
  117.     Mov     [BX],AX         ; Thus this method prevents a crash
  118.     Mov     BX,DESQ         ; if Int 2fh were called but not
  119.     Mov     [BX],AX         ; initialized.
  120.     Jmp    Short    Finis
  121. OTHEROPER  ENDP
  122. END
  123.